<?php
/**
 * 功能描述：	通用
 * @datetime	2022-07-23
 * @version   	v1.0
 * @author   	ZHL
 * @copyrigh  	2022 ZHL 版权所有
 */

class C_CommonController extends Controller {

    function index(){
        exit('c_common_index');
    }

    /**
     * Notes:异步-文件清理
     * User: ZhuHaili
     */
    public function clearfile(){
        $flag = Fun::input('flag');
        $commSer = new C_CommonServe();

        // 安全清理
        $infoArr = $commSer->getFileLog('0'); // 查询临时文件

        // 深度清理
        if($flag == 2){
            $infoArr2 = $commSer->getFileLog('2'); // 查询失效文件
            $infoArr = array_merge($infoArr, $infoArr2);
        }
        // 为空无需清理
        if(empty($infoArr)){
            file_put_contents(SYS_CLEAR_LOG_FILE, 100);
            exit;
        }

        // 处理
        foreach($infoArr as $k=>$v){
            // 图片路径不为空
            if($v['title']){
                $rate = round(($k+1)/count($infoArr),2)*100;
                file_put_contents(SYS_CLEAR_LOG_FILE, $rate);
                // 删除缓存日志
                $commSer->updataFileLogDelflag($v['title']);
                // 文件存在
                if(file_exists(SYS_PATH.SYS_PATH_FILE.$v['title'])){
                    // 删除文件
                    @unlink(SYS_PATH.SYS_PATH_FILE.$v['title']);
                }
            }
        }
    }

    /**
     * Notes: 异步-生成静态文件
     * User: ZhuHaili
     */
    public function stilldo(){
        file_put_contents(SYS_CACHE_LOG_FILE, 0); // 刷新进度
        $flag = Fun::input('flag');
        $classM = new Admin_MenuModel();
        $list = $classM->getClassList(0); //0全部， 1顶部，2左侧
        $urlArr = array();
        $eSer = new Admin_EssayServe();
        foreach($list as $v){
            if(isset($v['tmpl']) && $v['tmpl']){
                // 栏目///////////
                //$getMenuUrl = setClassUrl($v); // 获取栏目url
                //$getMenuUrl = $this->urlDelFix($getMenuUrl);
                $getMenuUrl = getMenuUrl($v['id'], $v['tmpl'], $v['tmpltype'], $v['gourl'], $v['weburl']);
                $getMenuUrl = $this->urlDelFix($getMenuUrl);
                $getMenuUrl = $this->urlDelHost($getMenuUrl);
                array_push($urlArr, $getMenuUrl);
                // 文章///////////
                $classid = $v['id'];
                $mould = $v['mould_code'];
                // 栏目下文章列表
                if($GLOBALS['ADMIN']['classmore_flag'] == 1){ // 开多栏目关联时
                    $essayList = $eSer->getClassidEssayList($mould, $classid);
                }else{ // 当前栏目
                    $essayList = $eSer->getClassEssayList($mould, $classid);
                }
                // 更新全部的时候可以更新全部文章
                if($flag == 'all'){
                    if($v['showtype'] == 2){ // 为列表
                        foreach($essayList as $ek=>$ev){
                            if($ev['menu_id'] == $classid){ // 开启多栏目关联时过滤掉不是当前栏目下的文章
                                //$essayUrl = $v['tmplinfo'] ? $v['tmplinfo'] : $mould;
                                //$essayUrl = $essayUrl.'/eid/'.$ev['id'];
                                $essayUrl = getEssayUrl($ev['id'], $v['tmplinfo'], $v['mould_code']);
                                $essayUrl = $this->urlDelFix($essayUrl);
                                $essayUrl = $this->urlDelHost($essayUrl);
                                array_push($urlArr, $essayUrl);
                            }
                        }
                    }
                }

                // 栏目文章分页
                $pageLimit = $v['pagelist'];
                $counts = count($essayList); // 总条数
                $pageSum = $counts ? ceil($counts/$pageLimit) : 1;    // 总页数
                // 栏目类型为列表页时并且页码数大于2时
                if($v['showtype'] == '2' && $pageSum > 1) {
                    for($i = 1; $i <= $pageSum; $i++){
                        $essayListUrl = $getMenuUrl.'/page/'.$i;
                        array_push($urlArr, $essayListUrl);
                    }
                }
            }
        }
        // 追加需要生成的页面
        $files = BaseData::$stillFileArr;
        foreach($files as $v){
            array_push($urlArr,$v);
        }
        // 生成静态
        $CacheHtml = new CacheHtml(SYS_STILL_PATH, SYS_HOST, SYS_URL_FIX);
        foreach($urlArr as $k=>$url){
            $CacheHtml->stillPath = SYS_STILL_PATH.$GLOBALS['ADMIN']['web_temp_p'].'/';
            $CacheHtml->create($url,'/'.SYS_URL_FIX_STILL.'/1'.SYS_URL_FIX);
            if($GLOBALS['ADMIN']['web_temp_flag'] == 1){
                if($GLOBALS['ADMIN']['web_temp_m']){
                    $CacheHtml->stillPath = SYS_STILL_PATH.$GLOBALS['ADMIN']['web_temp_m'].'/';
                    $CacheHtml->create($url,'/'.SYS_URL_FIX_STILL.'/1/'.SYS_URL_FIX_PORT.'/2'.SYS_URL_FIX);
                }
            }
            $rate = round(($k+1)/count($urlArr),2)*100;
            file_put_contents(SYS_CACHE_LOG_FILE, $rate); // 刷新进度
            //sleep(1);
        }
    }

    /**
     * Notes:去掉URL后缀
     * User: ZhuHaili
     */
    private function urlDelFix($url){
        return substr($url, 0,strlen($url)-strlen(SYS_URL_FIX));
    }

    /**
     * Notes:去掉域名
     * User: ZhuHaili
     */
    private function urlDelHost($url){
        return substr($url, strlen(SYS_HOST));
    }
}